template<class T>
class auto_ptr
{ p
ublic:
auto_ptr(T* ptr)
:_ptr(ptr)
{}
auto_ptr(auto_ptr<T>& sp)
:_ptr(sp._ptr)
{
// 管理权转移
sp._ptr = nullptr;
} a
uto_ptr<T>& operator=(auto_ptr<T>& ap)
{// 检测是否为⾃⼰给⾃⼰赋值
if (this != &ap)
{
// 释放当前对象中资源
if (_ptr)
delete _ptr;
// 转移ap中资源到当前对象中
_ptr = ap._ptr;
ap._ptr = NULL;
} r
eturn *this;
} ~
auto_ptr()
{
if (_ptr)
{
cout << "delete:" << _ptr << endl;
delete _ptr;
}
} /
/ 像指针⼀样使⽤
T& operator*()
{
return *_ptr;
} T
* operator->()
{
return _ptr;
}
private:
T* _ptr;
};
